Developers may have a hard time to learn from past failures or bugs in the application due to team autonomy, constant pressure to deliver and a heavily distributed code base. How can they achieve that past errors are avoided in future development activities?
Neal Ford, Rebecca Parsons and Patrick Kua are proposing fitness functions that check for certain qualities in software applications in their book "Building Evolutionary Architectures: Support Constant Change". Also, Neal is speaking particular
In this notebook, I take this idea to show you a possible implementation of fitness functions using Jupyter notebooks!
In [3]:
%load_ext cypher
In [7]:
%%cypher
MATCH
(p1:Package)-[:DEPENDS_ON]->(p2:Package),
path=shortestPath((p2)-[:DEPENDS_ON*]->(p1))
WHERE
p1<>p2
RETURN
p1 AS Package, EXTRACT(p IN nodes(path) | p.fqn) AS Cycle
ORDER BY
Package.fqn
Out[7]: